<?php

/**
 * 1. php使用一个脚本语言，有开始标记与结束标记，如果只有php内容，可以省略结束标记
 * 可以使用短标记，需要在php.ini中进行配置后才可以使用
 *
 */
?>

<?php
/***
 * 一个文件中可以有多个php段
 */
echo "数媒2351<br>";
//这个单行注释
/**
 * 这是多行注释！
 */
//echo是输出语句,使用. 进行字符串连接
echo "数媒2351" . "张三";
?>

<?php
/**
 * 标识符，对变量进行命名，遵循一定的规则。
 * 1. 字母数字下划线作为标识符组成部分
 * 2. 开头不能是数字
 * 3. 以$开头
 * 4. 不能是php保留字
 */
$a = 3;
/**
 * php不需要显示声明变量的类型，可以更加变量赋值进行类型推断
 * 
 */
$b = 4;
$c = $a + $b;
// $7c=$b;
echo $c;
?>
<?php
/**
 * php 常用的保留字
 * echo，if
 * else
 * switch
 * do
 * while
 * case
 * ... 
 */
?>

<?php
/**
 * 常量，值不会发生改变的量
 * 
 */

const  constA = "数媒2351";
echo  constA;

?>

<?php

/**
 * 1. php运行方式：
 * 1. 使用nginx或者apache创建web server
 * 2. 使用php内置的server，php放到环境变量中，安装插件php-server
 * 使用方式，在开发=时，使用第2种方式，运行时使用第1种方式
 * 
 */
echo "<br>";
echo __FILE__ . "<br>";
echo __LINE__ . "<br>";
echo PHP_OS . "<br>";
echo PHP_VERSION . "<br>";
?>


<?php
/**
 * 变量的赋值，把右边的值赋值给左边的变量
 * 变量名=$+标识符
 * 传值，传址
 */
$a = 13;
$b = $a;
$b = 14;
echo '$a=' . $a . "<br>";
/**
 * 值传递，两个变量完全独立，改变一个变量的值，不影响另外一个变量的值
 * 
 */
$d = "abc";
$$d = "hello";
echo '$abc=' . $abc . "<br>";
?>

<?php
/**
 * bool,int ,float,string
 * array ,object
 * resource NULL
 */
//其他类型转换为bool型，TRUE转换为1，FALSE转换为0或者空串
echo FALSE;
$e = 1 + TRUE + FALSE + TRUE;
echo $e . "<br>";

?>

<?php
/**
 * 整型
 * 10,8,16,2
 * 10正常表示
 * 8前面加0
 * 16前面加上0x
 * 2 0b
 */
$e = 10;
$f = 0123;
$h = 0x123;
$b = 0b101010;
$g = 2.7;
echo "10进制的数10=" . $e . "<br>";
echo "8进制的数0123=" . $f . "<br>";
echo "16进制的数0x123=" . $h . "<br>";
echo '2进制的数$b=' . $b . "<br>";
echo (int)$g . "<br>";
?>

<?php
/**
 * 字符串的表示
 * 1. 双引号，如果字符串中存在变量，会对变量进行替换
 * 2. 单引号，不对字符串中的变量进行替换
 * 3. 多行字符串的表示
 * 
 */

$str01 = <<<FOE
   this is a test!
   that is anther line!
FOE;

echo $str01 . "<br>";
?>

<?php
/**
 * 数据类型判断
 * 运行时，由程序自动判断
 * is_bool()
 * is_int()
 * is_float()
 * is_string()
 * is_array()
 * is_object()
 * is_resource()
 * is_null()
 * is_numeric()
 */
$a = 1;
var_dump($a);
$a = $a + 2.0;
var_dump($a);
echo is_bool(1 == 1) . "<br>";
echo var_dump(NULL === false) . "<br>";
$a = 123;
$ge = $a % 10;
$sh = $a / 10 % 10;
$bai = $a / 100 % 10;
echo $ge + $sh + $bai . "<br>";
?>

<?php
/**
 * 与截断  逻辑表达式左侧的值为false，整个逻辑表达式的值是false，可以忽略右侧表达式的计算
 * 或截断
 * 
 */
$a = 3;
$b = 4;
if ($a <= 3 || $b++ >= 4);
echo $b . "<br>";
echo @(4 / 0);
?>
<?php
/**
 * 运算符的优先级
 * 单目
 * 算术
 * 比较
 * 逻辑
 * 赋值
 * 逗号
 */
$i = 2;
$j = 4;
for ($i = 3, $j = 10; $i < 10 && $j > 6; $j--);
?>

<?php
/**
 * 分支
 *  if(){}
 *   else{
 * }
 */
//把百分制转换为5分制
$score = 78;
if ($score >= 90) {
  echo "A";
} else if ($score >= 80) {
  echo "B";
} else if ($score >= 70) {
  echo "C";
} else if ($score >= 60) {
  echo "D";
} else {
  echo "E";
}
//使用swtich完成同样功能
$n = (int)($score / 10);
switch ($n) {
  case 10:
  case 9:
    echo 'A';
    break;
  case 8:
    echo 'B';
    break;
  case 7:
    echo 'C';
    break;
  case 6:
    echo "D";
    break;
  default:
    echo "E";
}
?>